package chapter_05_builder.classic;

/**
 * Created by CharloYao on 2017/3/14.
 * 指挥者，导演类；
 * 指挥者负责安排复杂对象创建的具体顺序；
 * 指挥者与建造者之间存在关联关系；
 * 可以在其construct()方法中调用建造者对象的部件构造与装配方法，完成建造复杂对象的任务；
 *
 * 客户端一般只与指挥者类交互，客户端只要确定具体的建造者类型，并实例化建造者对象，
 * 通过指挥者类的构造方法或setter方法设置到指挥者类中
 */
public class Director {

    private Builder builder;

    public Director(Builder builder) {
        this.builder = builder;
    }

    public Product construct(){
        builder.buildPartA();
        builder.buildPartB();
        builder.buildPartC();

        return builder.getProduct();
    }
}
